/**
 * 菜单
 */
export namespace Menu {
    /**
     * 菜单列表查询对象
     */
    export interface Query {
        //关键字
        keywords?: string
        //菜单状态
        status?: number
    }

    export interface Row {
        id: number //  菜单ID
        parentId?: number //父菜单ID
        type?: string //菜单类型
        path?: string //路由路径
        component?: string //组件路径
        sort?: number //菜单排序（数字越小越靠前）
        visible?: number //菜单是否可见（1:显示、0:隐藏）
        icon?: string //图标
        redirect?: string //跳转路径
        perm?: string //按钮权限标识
        children?: Array<Row> //子菜单
    }

    export interface Form {
        id?: number //菜单ID
        parentId?: number //父菜单ID
        name?: string //菜单名称
        type?: string //菜单类型
        path?: string //路由路径
        component?: string //组件路径
        perm?: string //权限标识
        visible?: number //显示状态（1：显示、0：隐藏）
        sort?: number //排序（数字越小越靠前）
        icon?: string //菜单图标
        redirect?: string //跳转路径
        keepAlive?: boolean //【菜单】是否开启页面缓存
        alwaysShow?: boolean //【目录】只有一个自路由是否始终显示
    }

    /**
     * 路由对象
     */
    export interface Route {
        path?: string // 路由路径
        component?: string //组件路径
        redirect?: string //跳转路径
        //路由名称
        name?: string
        //路由属性
        meta?: RouteMeta
        //子路由
        children?: Array<Route>
    }

    /**
     * 路由属性
     */
    export interface RouteMeta {
        title?: string // 路由title
        icon?: string //图标
        hidden?: boolean //是否隐藏，true - 是，false - 否
        roles?: Array<string> //拥有路由权限的角色编码
        keepAlive?: boolean //  是否开启页面缓存
        alwaysShow?: boolean
    }
}
